package com.keya.features.job;

import java.io.Serializable;

/**
 * @author hsq
 * @version 1.0
 * @description TODO
 * @date 2021/9/18 2:29 下午
 */
public interface ScheduledOfTask extends Runnable, Serializable {

    String getCron();

    boolean isEnabled();

    default String getKey() {
        return this.getClass().getName();
    }

    /**
     * @description: 定时任务方法
     * @return: void
     * @author hsq
     * @date 2021/9/18 2:29 下午
     */
    void execute();

    /**
     * @param
     * @description: 实现控制定时任务启动和禁用功能
     * @return: void
     * @author hsq
     * @date 2021/9/18 2:29 下午
     */
    @Override
    default void run() {
        if (!isEnabled()) {
            return;
        }
        execute();
    }
}
